#ifndef ABSTRACT_PROPERTY_H
#define ABSTRACT_PROPERTY_H

#include <QVariant>
#include <QString>
#include <QObject>
#include <QList>

class QAbstractProperty: public QObject
{
    Q_OBJECT
public:
    virtual QString name()=0;
    virtual QVariant value()=0;
    virtual void    setValue(const QVariant &value)=0;
    virtual void    setModified(bool modified)=0;
    virtual void    setAttribute(const QString& key,const QVariant &value)=0;
    virtual QVariant attribute(const QString &key,const QVariant def=QVariant())=0;
};

typedef QList<QAbstractProperty*>   PropertyList;

Q_DECLARE_METATYPE(PropertyList)

#endif
